package com.llb666.e.shop.domain.repository;

import com.llb666.e.shop.api.vo.SearchItemsVo;
import com.llb666.e.shop.domain.entity.Items;
import com.llb666.e.shop.domain.entity.bo.ItemCommentBo;
import com.llb666.e.shop.domain.entity.bo.ShopCartBo;
import com.llb666.e.shop.infracore.web.PagedGridResult;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
 * @author llb666
 * @date 2022/9/12 22:58
 */
public interface ItemsRepository {

    /**
     * 查询商品详情.
     *
     * @param itemId 商品Id
     * @return 商品信息
     */
    Items queryById(String itemId);

    /**
     * 根据商品id和评论等级查询商品评论数.
     *
     * @param id    商品id
     * @param level 评论等级
     * @return 商品评论
     */
    Integer getCommentCount(String id, Integer level);

    /**
     * 查询商品评论.
     *
     * @param paramsMap -
     * @return 商品评论列表
     */
    PagedGridResult<ItemCommentBo> queryItemComments(Map<String, Object> paramsMap,Integer page, Integer size);

    /**
     * 根据商品规格id列表查询购物车信息.
     *
     * @param itemSpecIds 商品规格id列表
     * @return 购物车明细列表
     */
    List<ShopCartBo> queryItemsBySpecIds(String itemSpecIds);

    /**
     * 商品搜索列表查询.
     *
     * @param paramsMap 分类，排序.
     * @return 商品搜索列表
     */
    PagedGridResult<SearchItemsVo> searchItemsByThirdCat(Map<String, Object> paramsMap,Integer page, Integer size);

    /**
     * 根据商品id列表查询商品信息.
     *
     * @param itemIds 商品id
     * @return 商品列表
     */
    CompletableFuture<List<Items>> getItemsFutureByIds(List<String> itemIds);
}
